/**
 * ApplicationEvent 类是一个抽象类，用于表示应用程序事件。
 * 该类继承自 EventObject，并添加了时间戳功能以记录事件发生的时间。
 * 所有自定义的应用程序事件都应继承此类。
 */
package com.test.event;

import java.util.EventObject;

/**
 * 抽象类 ApplicationEvent，用于定义应用程序事件的基础结构。
 * 通过构造函数初始化事件源，并记录事件创建的时间戳。
 */
public abstract class ApplicationEvent extends EventObject {

    /**
     * 事件的时间戳，用于记录事件发生的具体时间。
     */
    private final long timestamp;

    /**
     * 构造函数，用于初始化事件源并记录当前时间作为时间戳。
     *
     * @param source 事件的来源对象，不能为空。
     */
    public ApplicationEvent(Object source) {
        super(source);
        this.timestamp = System.currentTimeMillis(); // 记录事件创建的当前时间。
    }

    /**
     * 获取事件的时间戳。
     *
     * @return 返回事件创建时的时间戳（毫秒级）。
     */
    public long getTimestamp() {
        return timestamp;
    }
}
